package Persistencia;



import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Calendar;
import java.util.Vector;


import Modelo.Adicional;
import Modelo.Base;
import Modelo.Cliente;
import Modelo.Dato;
import Modelo.Factura;
import Modelo.Linea;
import Modelo.LineaAdicional;
import Modelo.LineaTitular;
import Modelo.PaquetedeServicios;
import Modelo.Plan;
import Modelo.Prepago;
import Modelo.SMS;
import Modelo.Servicio;
import Modelo.Voz;


public class AdministradorPersistenciaFactura 
{
	private static AdministradorPersistenciaFactura pool;
	
	
	private AdministradorPersistenciaFactura()
	{
		
	}
	
	public static AdministradorPersistenciaFactura getInstancia()
	{
		if (pool== null)
			pool =new AdministradorPersistenciaFactura();
		return pool;
	}
	
	
	public boolean altaFactura(Factura f)
	{
		//Obtener conexion BD 
		Connection con = PoolConnection.getPoolConnection().getConnection();
		int cont = 1;
		//Generar sentencia SQL
		try
		{
			//Preparar sentencia insert en tabla destino
			String senten = "INSERT INTO facturas (id, periodo , usuario_id, total) VALUES (?,?,?,?)" ;
			String sentenItem = "INSERT INTO item_factura (id, factura_id , linea_id, descripcion, subtotal) VALUES (?,?,?,?,?)" ;
			PreparedStatement psItem = null;
			PreparedStatement ps = null;
			ps = con.prepareStatement(senten);
			ps.setInt(1,f.getNumerofactura());
			ps.setString(2,String.valueOf(f.getPeriodo())); 
			ps.setString(3,f.getUsuario().getDni());
			ps.setFloat(4,f.getTotal());
			ps.execute();
			for (int i = 0; i < f.getItemsFact().size(); i++) 
			{ 
				psItem = con.prepareStatement(sentenItem);
				psItem.setInt(1, i);
				psItem.setInt(2, f.getNumerofactura());
				psItem.setInt(3,f.getItemsFact().elementAt(i).getLinea().getNumero());
				psItem.setString(4, f.getItemsFact().elementAt(i).getDescripcion());
				psItem.setFloat(5, f.getItemsFact().elementAt(i).getSubMonto());
				psItem.execute();
			} 
		
			PoolConnection.getPoolConnection().realeaseConnection(con);
			return true;
		}
	      catch( SQLException e ) 
	      {
				System.out.println("Mensaje Error al Insertar Cliente: " + e.getMessage());
				System.out.println("Stack Trace al Insertar Cliente: " + e.getStackTrace());
				PoolConnection.getPoolConnection().realeaseConnection(con);
				return false;
	      }
	      
	}
	
	
}
